#ifndef __GAF_ACT_H__
#define __GAF_ACT_H__

namespace GAF
{
	struct ActionIntent;
	//class Runnable
		//class Player
			class Action;
}
typedef GAF::ActionIntent		GAF_SActionIntent;
typedef GAF::Action			GAF_CAction;

namespace GAF
{
	enum ActionMode
	{
		ACTION_AGAIN,		// 重复动作模式
		ACTION_RETURN		// 返复动作模式
	};
}
typedef GAF::ActionMode			GAF_EActionMode;
#define GAF_ACTION_AGAIN		GAF::ACTION_AGAIN
#define GAF_ACTION_RETURN		GAF::ACTION_RETURN

#include "GAF_Define.h"
#include "GAF_Player.h"
#include "GAF_Graphics.h"

namespace GAF
{
	struct ActionIntent
	{
		/// 动作模式
		ActionMode	amMode;		// 动作模式
		/// 移动重复次数
		UINT		nTimes;		// 运动次数

		ActionIntent()
		{
			amMode = ACTION_AGAIN;
			nTimes = 1;
		}

		void CopyControl(ActionIntent* paiOther)
		{
		}
	};

	/// 绘制对象动作基类
	class _ABSTRACT Action : public Player
	{
	public:
		Action();
		virtual ~Action();

	public:
 		/// 绑定的可绘制对象属性
 		DIM_ATTRIB(Graphics*, HostGraphics);

	protected:
		/// 设置动作目标效果
		virtual void		SetIntent(ActionIntent* pIntent)
					{return;}

// 继承
// 		// 定义操作
// 	protected:
// 		// 播放操作
// 		virtual bool		Playing(GAF_CBundle* pbdlParam)
// 					{return true;}
// 		// 运行操作
// 		virtual bool		Running(TimeTicks ttUsed, bool& isFinish)
// 					{return true;}
// 		// 暂停操作
// 		virtual bool		Pauseing()
// 					{return true;}
// 		// 完成操作
// 		virtual bool		Finishing()
// 					{return true;}
// 		// 停止操作
// 		virtual bool		Stopping()
// 					{return true;}
// 
// 		// 定义事件
// 	protected:
// 		// 当播放时
// 		virtual bool		OnPlay(GAF_CBundle* pbdlParam)
// 					{return true;}
// 		// 当播放更新时
// 		virtual bool		OnUpdate(TimeTicks ttUsed)
// 					{return true;}
// 		// 当播放暂停时
// 		virtual bool		OnPause()
// 					{return true;}
// 		// 当完成一次播放时
// 		virtual bool		OnFinish()
// 					{return true;}
// 		// 当播放停止时
// 		virtual bool		OnStop()
// 					{return true;}
	};

}

#endif
